A single microfiche appendix that contains a total of 43 frames is included with this patent application.
1. Technical Field
This invention generally relates to computer system displays and more specifically relates to a mechanism and method for defining and displaying user interface panels that are platform-independent.
2. Background Art
The development of the EDVAC computer system of 1948 is often cited as the beginning of the computer era. Since that time, computer systems have evolved into extremely sophisticated devices that may be found in many different settings. Computer systems typically include a combination of hardware (e.g., semiconductors, circuit boards, etc.) and software (e.g., computer programs). As advances in semiconductor processing and computer architecture push the performance of the computer hardware higher, more sophisticated computer software has evolved to take advantage of the higher performance of the hardware, resulting in computer systems today that are much more powerful than just a few years ago.
Early computer systems used command-based operating systems and software applications. These command-based systems provided a user interface that required the user to memorize a relatively large number of commands in order to perform meaningful work. The user interfaces for these command-driven computer programs required a relatively high level of skill to operate, and were not considered to be xe2x80x9cuser-friendly.xe2x80x9d With the introduction of the IBM personal computer (PC), computers became more widely available, both in the workplace and in homes, and the computer industry soon recognized the need to provide more user-friendly interfaces to computer programs. As a result, many different operating systems were introduced that provided a graphical user interface (GUI), including IBM""s OS/2, Microsoft Windows, and the Apple McIntosh. Software applications with graphical user interfaces soon followed, and the vast majority of computer programs running on personal computers today provides a user-friendly graphical user interface.
Most graphical user interfaces provide many common features. The basic display area in a graphical user interface is known as a window or panel. For the discussion in this patent application, we refer to a basic display area as a panel, recognizing that other terms are known in the art to describe display areas. A single panel may fill the entire display, or the display can be split into a number of different panels. A panel may include a number of different xe2x80x9ccomponentsxe2x80x9d, which are different areas that display text, drop-down lists, text entry fields, etc. A pointing device such as a trackball or a mouse is generally used to select various commands and options on a panel by clicking on the appropriate fields or buttons within the panel. In addition, a keyboard is commonly used to enter text information into a panel.
Various methods have been developed for generating panels. For example, an editor provided with Microsoft Visual C++ provides a graphical tool that allows a programmer to define a panel that may be displayed using Microsoft Windows by selecting and dropping desired components onto the panel. When the programmer is finished, the panel is defined as a Windows resource script (.rc file). Resource script is a special programming language that allows a user to define the appearance and function of a panel. Of course, when a programmer uses a graphical tool to generate a panel, the tool translates the components the programmer sees on the panel into a corresponding resource script without the programmer directly writing code in resource script format. An example of a panel defined in Windows resource script is shown in FIG. 3, with the corresponding resource script shown in FIGS. 4A and 4B.
While generating panels using Visual C++ is relatively straightforward, the resulting panels in resource script format can only be displayed on a Microsoft Windows platform. Today, there is a great push to provide software applications that are xe2x80x9cplatform-independentxe2x80x9d, which means that a software application may run on computer systems that have different operating systems, such as OS/2, Windows, AIX, AS/400, etc. The Java programming language developed by Sun Microsystems provides a programming language for platform-independent software applications.
The Java programming language currently has some graphical tools for generating panels in Java, such as Symantec Visual Cafe. These graphical tools generate Java code, and define sizes and positions of user interface components in absolute pixel coordinates. However, the preferred method of generating user interface panels in Java uses Java-defined classes known as layout managers. Java allows a programmer to select an appropriate layout manager class depending on the type of panel that the programmer wants to display and then add appropriate components to the panel. The layout manager will then work out how the components are displayed in the panel. It is often necessary to use different layout managers for different sections of a panel, imposing upon the programmer the burden and complexity of dealing with multiple layout managers.
Typically, the functional components are distinguished from mere text or other display information that is simply displayed to a user. The text or other display information is typically stored in a resource bundle separate from the Java functional components. Thus, a panel with English text will have a corresponding English resource bundle, while the same panel could be displayed in German using a German resource bundle instead of the English resource bundle. An example of a user interface panel that was generated in Java and that uses an English resource bundle is shown in FIG. 5.
In Java, the programmer has no direct control of location of components within the panel. The logic behind the layout managers is to allow an application to be ported to a different language quickly and easily. Thus, if the text on a button is twice as long in German than it is in English, the layout manager has the intelligence to stretch the button to accommodate the longer German label (stored in the German resource bundle) on the button. The panel of FIG. 6 is a German version of the panel of FIG. 5. However, defining user interface panels in Java has significant drawbacks. The programmer has no precise control over the appearance of components on a panel, but must instead rely on a Java layout manager to determine the size and position of components on the panel. In addition, using the layout managers in Java to generate a user interface panel requires that the programmer is skilled in the Java programming language. Thus, the generation and modification of user interface panels must be performed by a skilled Java programmer. This is in stark contrast to the Windows environment, where a person can design a platform-specific user interface panel using a graphical editor, having no specialized programming knowledge. Even using the graphical editors for Java panels, such as Symantec Visual Cafe, the result is Java code that defines sizes and positions of user interface components in absolute pixel coordinates, and that bypass the Java layout managers. This makes it difficult to port the panels to a different language, because translators must create new versions of the generated Java code for each language, and the application is obliged to provide run-time code that figures out which version of the panel should be invoked based on the language/country settings currently in effect. Without a mechanism that gives the programmer precise control over the location of components on a platform-independent panel without requiring specialized programming skills, the generation of platform-independent user interface panels will continue to be an impediment to the generation of platform-independent software.
According to the preferred embodiments, a specification language allows a user to define platform-independent user interface panels without detailed knowledge of complex computer programming languages. The specification language is referred to herein as a Panel Definition Markup Language (PDML), which defines tags that are used in similar fashion to those defined in Hypertext Markup Language (HTML), that allow a user to specify the exact location of components displayed in the panel. A graphical editor allows the creation and modification of platform-independent user interface panels without programming directly in the specification language. A conversion tool may be used to convert platform-specific user interface panels to corresponding platform-independent user interface panels. A help generator tool also facilitates the generation of context-sensitive help for a user interface panel.
The foregoing and other features and advantages of the invention will be apparent from the following more particular description of preferred embodiments of the invention, as illustrated in the accompanying drawings.